import re
#按序分组
#分组用小括号()来表示
#存在多个分组的情况下，正则表达式从1开始，按左到右顺序进行编号
line = 'Vlanif1          192.168.11.11/24     up         up'
match=re.search('(\S+)\s+([\w.]+)/',line)
print(match.group())
#\S 表示匹配任何可见字符
#\s 表示匹配任何不可见字符，包括空格、制表符、换页符
#\w 表示匹配包括下划线的任何单词字符
print(match.group(1))

print(match.group(2))

# print(match.group(3))
print(match.group(1,2))
print(match.group(1,2,1))

#在Python3.6以后，我们还可通过类似列表的索引方式，来提取值
print(match[0])
print(match[1])
print(match[2])
#按名分组
#给分组进行命名的语法是这样的：(?P<name>regex)
match=re.search('(?P<interface>\S+)\s+(?P<ipaddress>[\w.]+)/',line)
print(match.group('interface'))
print(match.group('ipaddress'))
#字典 groupdict
print(match.groupdict())

match1=re.search(r'(?P<interface>\S+)\s+(?P<ipaddress>[\w.]+)/.*(?P<status>up|down)\s+(?P<protocol>up|down)',line)
print(match1.group())